Instituto Federal de São Paulo (IFSP) Campus Bragança Paulista/SP Análise e Desenvolvimento de Sistemas (ADS) 3o. módulo Profa. Ana Paula Müller Giancoli paulagiancoli@ifsp.edu.br |
Figura 1: Software Engineering Process Office (SEPO)
Fonte: Autoria própria
| Medidas Diretas | Medidas Indiretas | |
|---|---|---|
| 1. Custos de Produção 2. Esforços de Produção 3. Linhas de Código 4. Velocidade de Execução 5. Memória 6. Defeitos (Número de Erros) |
1. Funcionalidade 2. Qualidade 3. Complexidade 4. Eficiência 5. Confiabilidade 6. Manutenibilidade |
MEDIDA: Uma indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho do produto ou do processo.
MEDIÇÃO: Ato de determinação de uma medida.
INDICADOR: É uma métrica ou a combinação delas, que fornece compreensão do processo de software, de um projeto ou do produto.
| Objetivos |
|---|
| Entender: ajudam a entender o comportamento e o funcionamento de produtos de software. Avaliar: utilizadas para determinar padrões, metas e critérios de aceitação. Controlar: utilizadas para controlar processos, produtos e serviços de software. Prever: utilizadas para prever valores de atributos. |
| Métricas |
|---|
| 1. Orientadas ao tamanho: são as medidas diretas. 2. Orientadas à função: são as medidas indiretas. 3. Orientadas às pessoas: são as atuações das pessoas, seus relacionamentos com ferramentas e métodos. 4. De Qualidade: são as em conformidade com os requisitos implícitos e explícitos do usuário. 5. De Produtividade: são as que possuem enfoque na saída do processo de engenharia de software, com objetivo de avaliar o próprio processo. 6. Técnicas: são as que possuem o enfoque nas características do software (complexidade, modularidade...) |
| Vantagens | Desvantagens | |
|---|---|---|
| - Fáceis de serem obtidas. - Vários modelos de estimativas baseados em LOC e KLOC. |
- LOC e KLOC dependem da Linguagem de Programação. - Penalizam programas bem projetados, mas pequenos. - Não se adaptam às linguagens não procedimentais. - Difícil de obter na fase de planejamento. |
| Projeto | Esforços | $ | KLOC | Págs. Doc. | Erros | Pessoas-Mês |
|---|---|---|---|---|---|---|
| projA | 24 | 168 | 12.1 | 365 | 29 | 3 |
| projB | 62 | 440 | 27.2 | 1224 | 86 | 5 |
| projC | 43 | 314 | 20.2 | 365 | 64 | 36 |
| Métricas derivadas | ||
|---|---|---|
| Produtividade | = Pessoas-Mês / KLOC | |
| Qualidade | = Erros / KLOC | |
| Custo | = $ / LOC | |
| Documentação | = Págs. Doc. / KLOC |
| Vantagens | Desvantagens | |
|---|---|---|
| - Independentes da linguagem de programação. - Ideal para aplicações que usam linguagens não procedimental. - Baseados em dados mais fáceis de serem conhecidos durante a evolução do projeto. |
- Cálculo baseado em dados subjetivos. - Não é uma medida direta, é apenas um número. |
| Tipo de Dados | Tipo de Transações | |
|---|---|---|
| (a) Arquivos Lógicos Internos: ALI. (b) Arquivos de Interface Externa: AIE. |
(a) Entradas Externas: EE. (b) Saídas Externas: SE (c) Consultas Externas: CE. |
| Procedimento |
|---|
| 1.Identificar o Tipo de Contagem. 2.Identificar o escopo e a fronteira de aplicação. 3.Contar Funções de Dados e Funções Transacionais. 4.Determinar o Fator de Ajuste e os Pontos de Funções não ajustados. 5.Calcular os Pontos de Funções Ajustados. |
Figura 2: Fronteira da Aplicação
Fonte: Autoria própria
Figura 3: Detalhamento da Fronteira da Aplicação
Fonte: Autoria própria
| Sigla | Significado | Descrição |
|---|---|---|
| ALI | Arquivos Lógicos Internos | É um grupo de dados logicamente relacionados, ou informações de controle, identificados e modificados pelo usuário e mantidos dentro da fronteira da aplicação que está sendo controlada. |
| AIE | Arquivos Interface Externa | É um grupo de dados logicamente relacionados, ou informações de controle, utilizados no sistema que está sendo analisado, mas que são mantidos fora da fronteira da aplicação que está sendo contada. |
| EE | Entradas Externas | É qualquer função ou transação que leva dados ou informações de controle de fora para dentro da fronteira da aplicação que está sendo contada. |
| SE | Saídas Externas | É um processo que fornece dados derivados (ocorre quando um ou mais dados elementares são combinados para gerar elementos de dados adicionais) para fora da fronteira da aplicação que está sendo contada. |
| CE | Consultas Externas | É uma transação que combina transações de entrada e saída, resultando em recuperação de dados de um ALI ou AIE. |
| Contagem Função Dados |
|---|
| 1. Cada uma dessas funções de dados deve ser classificada segundo sua complexidade funcional. (vide tabela a seguir) 2. Essa complexidade é definida com base em dois conceitos: registros lógicos e itens de dados. - Registros Lógicos: são subconjuntos de dados dentro de um ALI/AIE, que foram reconhecidos pelo usuário. Se o usuário não reconhecer subconjuntos de dados em um ALI/AIE, então se deve contar o ALI/AIE como um registro lógico. - Item de Dados: é um campo reconhecido pelo usuário como único e não repetido. Vale destacar que só devem ser contados os itens de dados utilizados pela aplicação em contagem. |
| Linha 1: De 1 a 19 | De 20 a 50 | 51 ou mais | |
|---|---|---|---|
| Coluna 1 Apenas 1 |
SIMPLES | SIMPLES | MÉDIA |
| De 2 a 5 | SIMPLES | MÉDIA | COMPLEXA |
| 6 ou mais | MÉDIA | COMPLEXA | COMPLEXA |
| Contagem Função Transacionais |
|---|
| 1. Envolve a identificação de funções transacionais (entradas externas, saídas externas e consultas externas) e sua classificação de acordo com a complexidade funcional envolvida (simples, média ou complexa). 2. A complexidade funcional é feita com base: número de arquivos referenciados e dos itens de dados manipulados pela função. 3. Utilizando as tabelas a seguir, sendo a primeira para entradas externas e a segunda para saídas e consultas externas. 4. Um arquivo referenciado pode ser um ALI lido ou mantido pela função transacional, ou um AIE lido pela função transacional. 5. Já o número de itens de dados referenciados é calculado considerando apenas os itens de dados efetivamente referenciados pela função transacional em questão. |
| Linha 1: De 1 a 4 | De 5 a 15 | 16 ou mais | |
|---|---|---|---|
| Coluna 1 0 ou 1 |
SIMPLES | SIMPLES | MÉDIA |
| 2 | SIMPLES | MÉDIA | COMPLEXA |
| 3 ou mais | MÉDIA | COMPLEXA | COMPLEXA |
| Linha 1: De 1 a 5 | De 6 a 19 | 20 ou mais | |
|---|---|---|---|
| Coluna 1 0 ou 1 |
SIMPLES | SIMPLES | MÉDIA |
| 2 ou 3 | SIMPLES | MÉDIA | COMPLEXA |
| 4 ou mais | MÉDIA | COMPLEXA | COMPLEXA |
IMPORTANTE
from IPython.display import display, Math, Latex
display(Math(r'NPF_{i} = \sum_{j=1}^3 NC_{i,j} * C_{i, j}'))
| Linha 1: SIMPLES | MÉDIA | COMPLEXA | |
|---|---|---|---|
| Coluna 1 ALI |
7 | 10 | 15 |
| AIE | 5 | 7 | 10 |
| EE | 3 | 4 | 6 |
| SE | 4 | 5 | 7 |
| CE | 3 | 4 | 6 |
IMPORTANTE
from IPython.display import display, Math, Latex
display(Math(r'PFNA = \sum_{i=1}^5 NPF_{i}'))
| 1. O fator de ajuste influencia os pontos de função não ajustados em +/- 35%, obtendo-se o número de PFs ajustados. 2. Para se calcular o fator de ajuste, são usadas 14 características gerais dos sistemas, a saber: 2.1 É requerida Comunicação de Dados ? 2.2 Existem Funções de Processamento de Dados Distribuído ? 2.3 O Desempenho é crítico ? 2.4 Utilização do Equipamento (Restrições de Recursos Computacionais). Funcionará em um SO existente e intensamente utilizado ? 2.5 As entradas on-line requerem que as transações de entrada sejam construídas com um Volume de Telas e Transações ? 2.6 São requeridas Entrada de Dados On-line ? 2.7 Eficiência do Usuário Final (Usabilidade) ? 2.8 A Atualização dos arquivos é On-line ? 2.9 O Processamento Interno é Complexo ? 2.10 O código é projeto e adequado para Reusabilidade ? 2.11 Facilidade de Implantação. A conversão e instalação estão incluídas no projeto ? 2.12 Facilidade Operacional (Processos Operacionais, tais como Inicialização, Cópia de Segurança, Recuperação etc). O sistema exige backup e recuperação confiáveis ? 2.13 Múltiplos Locais e Organizações do Usuário ? 2.14 Facilidade de Mudanças (Manutenibilidade) e uso pelo usuário ? |
| 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| NENHUMA | POUCA | MODERADA | MÉDIA | SIGNIFICANTE | ESSENCIAL |
from IPython.display import display, Math, Latex
display(Math(r'NIT = \sum_{i=1}^{14} GI_{i}'))
from IPython.display import display, Math, Latex
display(Math(r'VFA = (NIT * 0.01) + 0.65'))
| Cálculo dos Pontos de Função Ajustados |
|---|
| 1. Uma vez calculados os PF não ajustados e o fator de ajuste, é possível calcular os PFs ajustados. 2. Esse cálculo é feito de formas diferentes para cada tipo de contagem (projeto de desenvolvimento, projeto de manutenção ou aplicações instaladas). 3. Para projetos de desenvolvimento, o cálculo é dado por: |
from IPython.display import display, Math, Latex
display(Math(r'PF = (PFNA * VFA) '))
| Pssos para COntagem Estimada de Pontos de Função |
|---|
| 1. Determinar todos os ALI, AIE, EE, SE, CE. 2. Atribuir a complexidade dos AIE e ALI como Baixa e das funções tipo transação EE, SE e CE como Média. 3. Calcular o total da contagem dos pontos de funções, segunda a tabela de complexidade. |
| Linha 1: SIMPLES | MÉDIA | COMPLEXA | |
|---|---|---|---|
| Coluna 1 ALI |
7 | 10 | 15 |
| AIE | 5 | 7 | 10 |
| EE | 3 | 4 | 6 |
| SE | 4 | 5 | 7 |
| CE | 3 | 4 | 6 |
| Linha 1: Contagem | * | SIMPLES | MÉDIA | COMPLEXA | = | |
|---|---|---|---|---|---|---|
| Coluna 1 número de arquivo ALI |
* | 7 | 10 | 15 | = | |
| número de interfaces esternas AIE | * | 5 | 7 | 10 | = | |
| números de entradas do usuário EE | * | 3 | 4 | 6 | = | |
| número de saídas do usuário SE | * | 4 | 5 | 7 | = | |
| número de consultas do usuário CE | * | 3 | 4 | 6 | = |
| Pergunta | Resposta |
|---|---|
| 1. O fator de ajuste influencia os pontos de função não ajustados em +/- 35%, obtendo-se o número de PFs ajustados. 2. Para se calcular o fator de ajuste, são usadas 14 características gerais dos sistemas, a saber: 2.1 É requerida Comunicação de Dados ? 2.2 Existem Funções de Processamento de Dados Distribuído ? 2.3 O Desempenho é crítico ? 2.4 Utilização do Equipamento (Restrições de Recursos Computacionais). Funcionará em um SO existente e intensamente utilizado ? 2.5 As entradas on-line requerem que as transações de entrada sejam construídas com um Volume de Telas e Transações ? 2.6 São requeridas Entrada de Dados On-line ? 2.7 Eficiência do Usuário Final (Usabilidade) ? 2.8 A Atualização dos arquivos é On-line ? 2.9 O Processamento Interno é Complexo ? 2.10 O código é projeto e adequado para Reusabilidade ? 2.11 Facilidade de Implantação. A conversão e instalação estão incluídas no projeto ? 2.12 Facilidade Operacional (Processos Operacionais, tais como Inicialização, Cópia de Segurança, Recuperação etc). O sistema exige backup e recuperação confiáveis? 2.13 Múltiplos Locais e Organizações do Usuário ? 2.14 Facilidade de Mudanças (Manutenibilidade) e uso pelo usuário ? |
|
| TOTAL |
| 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| NENHUMA | POUCA | MODERADA | MÉDIA | SIGNIFICANTE | ESSENCIAL |
from IPython.display import display, Math, Latex
display(Math(r'NIT = \sum_{i=1}^{14} GI_{i}'))
from IPython.display import display, Math, Latex
display(Math(r'VFA = (NIT * 0.01) + 0.65'))
from IPython.display import display, Math, Latex
display(Math(r'PF = Contagem Total * ( VFA ) '))
display(Math(r'PF = Contagem Total * ( (NIT * 0.01) + 0.65) '))
| Métricas derivadas | ||
|---|---|---|
| Produtividade | = Pessoas-Mês / PF | |
| Qualidade | = Erros / PF | |
| Custo | = $ / PF | |
| Documentação | = Págs. Doc. / PF |
ADS - AOO - 3o. módulo.
Modelo e formato elaborado por profa. Ana Paula Müller Giancoli - BSD 2-Clause License. - Setembro.2020.